Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / scripts / check-git-deps.mjs

Displaying Raw • Download


scripts/check-git-deps.mjs v4.8.1 (f6cc7b83) Text, 11.08 KB

T8b949e#!/usr/bin/env node
T8b949e// SPDX-License-Identifier: 0BSD
T8b949e/**
* Fail when git-hosted deps or remote download URLs drift from scripts/deps-allowlist.json.
* Covers package.json github:/git+ specs, pnpm-lock pins, flatpak git sources, and Micron WASM URLs.
*/
Tff7b72import Te6edf3fs Tff7b72from Ta5d6ff"node:fs"Tb4b4b4;
Tff7b72import Te6edf3path Tff7b72from Ta5d6ff"node:path"Tb4b4b4;
Tff7b72import Te6edf3process Tff7b72from Ta5d6ff"node:process"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3fileURLToPath Tb4b4b4} Tff7b72from Ta5d6ff"node:url"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3MICRON_PARSER_GO_RELEASE_TAG Tb4b4b4} Tff7b72from Ta5d6ff"./micron-parser-go-version.mjs"Tb4b4b4;

Tff7b72const Te6edf3__dirname Tff7b72= Te6edf3pathTb4b4b4.Te6edf3dirnameTb4b4b4(Te6edf3fileURLToPathTb4b4b4(Tff7b72importTb4b4b4.Te6edf3metaTb4b4b4.Te6edf3urlTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3ROOT Tff7b72= Te6edf3pathTb4b4b4.Te6edf3resolveTb4b4b4(Te6edf3__dirnameTb4b4b4, Ta5d6ff".."Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3ALLOWLIST_PATH Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"scripts"Tb4b4b4, Ta5d6ff"deps-allowlist.json"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3PACKAGE_JSON_PATH Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"package.json"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3LOCKFILE_PATH Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"pnpm-lock.yaml"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3FETCH_MICRON_WASM_PATH Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"scripts"Tb4b4b4, Ta5d6ff"fetch-micron-wasm.mjs"Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3GIT_SPEC_RE Tff7b72= Ta5d6ff/^(github:|git\+|git:)/iTb4b4b4;
Tff7b72const Te6edf3FULL_COMMIT_RE Tff7b72= Ta5d6ff/^[0-9a-f]{40}$/iTb4b4b4;
Tff7b72const Te6edf3CODELOAD_COMMIT_RE Tff7b72= Ta5d6ff/codeload\.github\.com\/[^/]+\/[^/]+\/tar\.gz\/([0-9a-f]{40})/iTb4b4b4;

T8b949e/**
* Glob-style match with only "*" wildcards (no RegExp constructor).
*
* @param {string} pattern
* @param {string} value
*/
Tff7b72function Te6edf3matchPatternTb4b4b4(Te6edf3patternTb4b4b4, Te6edf3valueTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3parts Tff7b72= Te6edf3patternTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"*"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3partsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3pattern Tff7b72=== Te6edf3valueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3valueTb4b4b4.Te6edf3startsWithTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3cursor Tff7b72= Te6edf3partsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff1Tb4b4b4; Te6edf3i Tff7b72< Te6edf3partsTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3part Tff7b72= Te6edf3partsTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3partTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3i Tff7b72=== Te6edf3partsTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3found Tff7b72= Te6edf3valueTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3partTb4b4b4, Te6edf3cursorTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3found Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Te6edf3cursor Tff7b72= Te6edf3found Tff7b72+ Te6edf3partTb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3cursor Tff7b72=== Te6edf3valueTb4b4b4.Te6edf3length Tff7b72|| Te6edf3patternTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"*"Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {string} spec
*/
Tff7b72function Te6edf3splitGitSpecTb4b4b4(Te6edf3specTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hashIndex Tff7b72= Te6edf3specTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff"#"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hashIndex Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3baseTff7b72: Te6edf3specTb4b4b4, Te6edf3refTff7b72: Tff7b72null Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4{
Te6edf3baseTff7b72: Te6edf3specTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3hashIndexTb4b4b4)Tb4b4b4,
Te6edf3refTff7b72: Te6edf3specTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3hashIndex Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e/**
* Escape is unnecessary here: package names are matched as exact lockfile headers.
*
* @param {string} lockText
* @param {string} name
*/
Tff7b72function Te6edf3lockfileCommitForPackageTb4b4b4(Te6edf3lockTextTb4b4b4, Te6edf3nameTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3header Tff7b72= Ta5d6ff`Ta5d6ff Tffd700${Te6edf3nameTffd700}Ta5d6ff:Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3lines Tff7b72= Te6edf3lockTextTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff/\r?\n/Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3inPackage Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3line Tff7b72of Te6edf3linesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3line Tff7b72=== Te6edf3headerTb4b4b4) Tb4b4b4{
Te6edf3inPackage Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3inPackageTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Ta5d6ff/^\s{4}\S/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3lineTb4b4b4) Tff7b72&& Tff7b72!Te6edf3lineTb4b4b4.Te6edf3startsWithTb4b4b4(Te6edf3headerTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3versionMatch Tff7b72= Te6edf3lineTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/^\s+version:\s+(\S+)\s*$/Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3versionMatchTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3codeload Tff7b72= Te6edf3versionMatchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3CODELOAD_COMMIT_RETb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3codeloadTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3codeloadTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3tarballMarker Tff7b72= Ta5d6ff"tarball: "Tb4b4b4;
Tff7b72const Te6edf3tarballAt Tff7b72= Te6edf3lineTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3tarballMarkerTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3tarballAt Tff7b72>= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3rest Tff7b72= Te6edf3lineTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3tarballAt Tff7b72+ Te6edf3tarballMarkerTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3codeload Tff7b72= Te6edf3restTb4b4b4.Te6edf3matchTb4b4b4(Te6edf3CODELOAD_COMMIT_RETb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3codeloadTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3codeloadTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72const Te6edf3marker Tff7b72= Ta5d6ff`Tffd700${Te6edf3nameTffd700}Ta5d6ff@https://codeload.github.com/Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3markerAt Tff7b72= Te6edf3lockTextTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3markerTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3markerAt Tff7b72>= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3slice Tff7b72= Te6edf3lockTextTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3markerAtTb4b4b4, Te6edf3markerAt Tff7b72+ Te6edf3markerTb4b4b4.Te6edf3length Tff7b72+ T79c0ff200Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3codeload Tff7b72= Te6edf3sliceTb4b4b4.Te6edf3matchTb4b4b4(Te6edf3CODELOAD_COMMIT_RETb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3codeloadTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3codeloadTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}

T8b949e/**
* @param {string} text
* @param {string} constName
*/
Tff7b72function Te6edf3readExportedStringConstTb4b4b4(Te6edf3textTb4b4b4, Te6edf3constNameTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3needle Tff7b72= Ta5d6ff`Ta5d6ffconst Tffd700${Te6edf3constNameTffd700}Ta5d6ff = Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3idx Tff7b72= Te6edf3textTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3needleTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3idx Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3after Tff7b72= Te6edf3textTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3idx Tff7b72+ Te6edf3needleTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3trimStartTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3quote Tff7b72= Te6edf3afterTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3quote Tff7b72!== Ta5d6ff'"' Tff7b72&& Te6edf3quote Tff7b72!== Ta5d6ff"'" Tff7b72&& Te6edf3quote Tff7b72!== Ta5d6ff"`"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3end Tff7b72= Te6edf3afterTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3quoteTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3end Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3afterTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3endTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72function Te6edf3mainTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e/** @type {string[]} */
Tff7b72const Te6edf3errors Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;

Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3ALLOWLIST_PATHTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Ta5d6ffcheck-git-deps: missing allowlist Tffd700${Te6edf3pathTb4b4b4.Te6edf3relativeTb4b4b4(Te6edf3ROOTTb4b4b4, Te6edf3ALLOWLIST_PATHTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3allowlist Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3fsTb4b4b4.Te6edf3readFileSyncTb4b4b4(Te6edf3ALLOWLIST_PATHTb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3packageJson Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3fsTb4b4b4.Te6edf3readFileSyncTb4b4b4(Te6edf3PACKAGE_JSON_PATHTb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3lockText Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readFileSyncTb4b4b4(Te6edf3LOCKFILE_PATHTb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fetchMicronText Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readFileSyncTb4b4b4(Te6edf3FETCH_MICRON_WASM_PATHTb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3depSections Tff7b72= Tb4b4b4[Ta5d6ff"dependencies"Tb4b4b4, Ta5d6ff"devDependencies"Tb4b4b4, Ta5d6ff"optionalDependencies"Tb4b4b4, Ta5d6ff"peerDependencies"Tb4b4b4]Tb4b4b4;
T8b949e/** @type {{ name: string, spec: string }[]} */
Tff7b72const Te6edf3gitDeps Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3section Tff7b72of Te6edf3depSectionsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3block Tff7b72= Te6edf3packageJsonTb4b4b4[Te6edf3sectionTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3block Tff7b72|| Tff7b72typeof Te6edf3block Tff7b72!== Ta5d6ff"object"Tb4b4b4) Tff7b72continueTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3nameTb4b4b4, Te6edf3specTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Te6edf3blockTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3spec Tff7b72=== Ta5d6ff"string" Tff7b72&& Te6edf3GIT_SPEC_RETb4b4b4.Te6edf3testTb4b4b4(Te6edf3specTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3gitDepsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTb4b4b4, Te6edf3spec Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72const Te6edf3allowByName Tff7b72= Tff7b72new Tffa657MapTb4b4b4(Tb4b4b4(Te6edf3allowlistTb4b4b4.Te6edf3git_dependencies Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3entryTb4b4b4) Tb4b4b4=> Tb4b4b4[Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4, Te6edf3entryTb4b4b4]Tb4b4b4)Tb4b4b4)Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3dep Tff7b72of Te6edf3gitDepsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3allowed Tff7b72= Te6edf3allowByNameTb4b4b4.Te6edf3getTb4b4b4(Te6edf3depTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3allowedTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffgit dependency "Tffd700${Te6edf3depTb4b4b4.Te6edf3nameTffd700}Ta5d6ff" (Tffd700${Te6edf3depTb4b4b4.Te6edf3specTffd700}Ta5d6ff) is not in deps-allowlist.jsonTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}

Tff7b72const Tb4b4b4{ Te6edf3baseTb4b4b4, Te6edf3ref Tb4b4b4} Tff7b72= Te6edf3splitGitSpecTb4b4b4(Te6edf3depTb4b4b4.Te6edf3specTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3allowedBases Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4(Te6edf3allowedTb4b4b4.Te6edf3specifiers Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3specTb4b4b4) Tb4b4b4=> Te6edf3splitGitSpecTb4b4b4(Te6edf3specTb4b4b4)Tb4b4b4.Te6edf3baseTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3allowedBasesTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3baseTb4b4b4) Tff7b72&& Tff7b72!Tb4b4b4(Te6edf3allowedTb4b4b4.Te6edf3specifiers Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3depTb4b4b4.Te6edf3specTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(
Ta5d6ff`Ta5d6ffgit dependency "Tffd700${Te6edf3depTb4b4b4.Te6edf3nameTffd700}Ta5d6ff" specifier base "Tffd700${Te6edf3baseTffd700}Ta5d6ff" is not allowlisted (have: Tffd700${Tb4b4b4(Te6edf3allowedTb4b4b4.Te6edf3specifiers Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff", "Tb4b4b4)Tffd700}Ta5d6ff)Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3lockCommit Tff7b72= Te6edf3lockfileCommitForPackageTb4b4b4(Te6edf3lockTextTb4b4b4, Te6edf3depTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lockCommitTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffgit dependency "Tffd700${Te6edf3depTb4b4b4.Te6edf3nameTffd700}Ta5d6ff" is unpinned in pnpm-lock.yaml (no 40-char commit)Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3FULL_COMMIT_RETb4b4b4.Te6edf3testTb4b4b4(Te6edf3lockCommitTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffgit dependency "Tffd700${Te6edf3depTb4b4b4.Te6edf3nameTffd700}Ta5d6ff" lock commit is not a full SHA: Tffd700${Te6edf3lockCommitTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lockCommit Tff7b72!== Tffa657StringTb4b4b4(Te6edf3allowedTb4b4b4.Te6edf3commitTb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(
Ta5d6ff`Ta5d6ffgit dependency "Tffd700${Te6edf3depTb4b4b4.Te6edf3nameTffd700}Ta5d6ff" lock commit Tffd700${Te6edf3lockCommitTffd700}Ta5d6ff drifts from allowlist Tffd700${Te6edf3allowedTb4b4b4.Te6edf3commitTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3ref Tff7b72&& Te6edf3FULL_COMMIT_RETb4b4b4.Te6edf3testTb4b4b4(Te6edf3refTb4b4b4) Tff7b72&& Te6edf3refTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4) Tff7b72!== Tffa657StringTb4b4b4(Te6edf3allowedTb4b4b4.Te6edf3commitTb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(
Ta5d6ff`Ta5d6ffgit dependency "Tffd700${Te6edf3depTb4b4b4.Te6edf3nameTffd700}Ta5d6ff" package.json ref #Tffd700${Te6edf3refTffd700}Ta5d6ff drifts from allowlist Tffd700${Te6edf3allowedTb4b4b4.Te6edf3commitTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3refTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(
Ta5d6ff`Ta5d6ffgit dependency "Tffd700${Te6edf3depTb4b4b4.Te6edf3nameTffd700}Ta5d6ff" package.json specifier is floating (Tffd700${Te6edf3depTb4b4b4.Te6edf3specTffd700}Ta5d6ff). Pin with #Tffd700${Te6edf3allowedTb4b4b4.Te6edf3commitTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3allowed Tff7b72of Te6edf3allowlistTb4b4b4.Te6edf3git_dependencies Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3gitDepsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3depTb4b4b4) Tb4b4b4=> Te6edf3depTb4b4b4.Te6edf3name Tff7b72=== Te6edf3allowedTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(
Ta5d6ff`Ta5d6ffallowlist git dependency "Tffd700${Te6edf3allowedTb4b4b4.Te6edf3nameTffd700}Ta5d6ff" is missing from package.json (remove from allowlist or restore dep)Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72const Te6edf3flatpakModules Tff7b72= Te6edf3packageJsonTb4b4b4.Te6edf3buildTff7b72?Tb4b4b4.Te6edf3flatpakTff7b72?Tb4b4b4.Te6edf3modules Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3allowGitSources Tff7b72= Te6edf3allowlistTb4b4b4.Te6edf3git_sources Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
T8b949e/** @type {object[]} */
Tff7b72const Te6edf3declaredGitSources Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3mod Tff7b72of Te6edf3flatpakModulesTb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3source Tff7b72of Te6edf3modTb4b4b4.Te6edf3sources Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3source Tff7b72&& Te6edf3sourceTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"git" Tff7b72&& Te6edf3sourceTb4b4b4.Te6edf3urlTb4b4b4) Tb4b4b4{
Te6edf3declaredGitSourcesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3source Tff7b72of Te6edf3declaredGitSourcesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3allowed Tff7b72= Te6edf3allowGitSourcesTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3entryTb4b4b4) Tb4b4b4=> Te6edf3entryTb4b4b4.Te6edf3url Tff7b72=== Te6edf3sourceTb4b4b4.Te6edf3urlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3allowedTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffflatpak git source Tffd700${Te6edf3sourceTb4b4b4.Te6edf3urlTffd700}Ta5d6ff is not in deps-allowlist.jsonTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3allowedTb4b4b4.Te6edf3commit Tff7b72&& Te6edf3sourceTb4b4b4.Te6edf3commit Tff7b72&& Te6edf3sourceTb4b4b4.Te6edf3commit Tff7b72!== Te6edf3allowedTb4b4b4.Te6edf3commitTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(
Ta5d6ff`Ta5d6ffflatpak git source Tffd700${Te6edf3sourceTb4b4b4.Te6edf3urlTffd700}Ta5d6ff commit Tffd700${Te6edf3sourceTb4b4b4.Te6edf3commitTffd700}Ta5d6ff drifts from allowlist Tffd700${Te6edf3allowedTb4b4b4.Te6edf3commitTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3allowedTb4b4b4.Te6edf3tag Tff7b72&& Te6edf3sourceTb4b4b4.Te6edf3tag Tff7b72&& Te6edf3sourceTb4b4b4.Te6edf3tag Tff7b72!== Te6edf3allowedTb4b4b4.Te6edf3tagTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffflatpak git source Tffd700${Te6edf3sourceTb4b4b4.Te6edf3urlTffd700}Ta5d6ff tag Tffd700${Te6edf3sourceTb4b4b4.Te6edf3tagTffd700}Ta5d6ff drifts from allowlist Tffd700${Te6edf3allowedTb4b4b4.Te6edf3tagTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3sourceTb4b4b4.Te6edf3commitTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffflatpak git source Tffd700${Te6edf3sourceTb4b4b4.Te6edf3urlTffd700}Ta5d6ff is missing commit pinTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3allowed Tff7b72of Te6edf3allowGitSourcesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3declaredGitSourcesTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3sourceTb4b4b4) Tb4b4b4=> Te6edf3sourceTb4b4b4.Te6edf3url Tff7b72=== Te6edf3allowedTb4b4b4.Te6edf3urlTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffallowlist git source Tffd700${Te6edf3allowedTb4b4b4.Te6edf3urlTffd700}Ta5d6ff is missing from package.json flatpak modulesTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72const Te6edf3wasmUrlTemplate Tff7b72= Te6edf3readExportedStringConstTb4b4b4(Te6edf3fetchMicronTextTb4b4b4, Ta5d6ff"DEFAULT_WASM_URL"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wasmExecUrl Tff7b72= Te6edf3readExportedStringConstTb4b4b4(Te6edf3fetchMicronTextTb4b4b4, Ta5d6ff"DEFAULT_WASM_EXEC_URL"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wasmUrlResolved Tff7b72= Ta5d6ff`Ta5d6ffhttps://github.com/Quad4-Software/Micron-Parser-Go/releases/download/Tffd700${Te6edf3MICRON_PARSER_GO_RELEASE_TAGTffd700}Ta5d6ff/micron-parser-go.wasmTa5d6ff`Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3entry Tff7b72of Te6edf3allowlistTb4b4b4.Te6edf3download_urls Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3name Tff7b72=== Ta5d6ff"micron-parser-go-wasm"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3pinned_tag Tff7b72&& Te6edf3entryTb4b4b4.Te6edf3pinned_tag Tff7b72!== Te6edf3MICRON_PARSER_GO_RELEASE_TAGTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(
Ta5d6ff`Ta5d6ffMicron WASM tag Tffd700${Te6edf3MICRON_PARSER_GO_RELEASE_TAGTffd700}Ta5d6ff drifts from allowlist Tffd700${Te6edf3entryTb4b4b4.Te6edf3pinned_tagTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3pattern Tff7b72&& Tff7b72!Te6edf3matchPatternTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3patternTb4b4b4, Te6edf3wasmUrlResolvedTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffMicron WASM URL Tffd700${Te6edf3wasmUrlResolvedTffd700}Ta5d6ff does not match allowlist pattern Tffd700${Te6edf3entryTb4b4b4.Te6edf3patternTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3wasmUrlTemplate Tff7b72&& Tff7b72!Te6edf3wasmUrlTemplateTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Micron-Parser-Go/releases/download/"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6fffetch-micron-wasm.mjs DEFAULT_WASM_URL looks unexpected: Tffd700${Te6edf3wasmUrlTemplateTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3name Tff7b72=== Ta5d6ff"golang-wasm-exec"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3wasmExecUrlTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff"fetch-micron-wasm.mjs DEFAULT_WASM_EXEC_URL missing"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3url Tff7b72&& Te6edf3wasmExecUrl Tff7b72!== Te6edf3entryTb4b4b4.Te6edf3urlTb4b4b4) Tb4b4b4{
Te6edf3errorsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffwasm_exec URL Tffd700${Te6edf3wasmExecUrlTffd700}Ta5d6ff drifts from allowlist Tffd700${Te6edf3entryTb4b4b4.Te6edf3urlTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3errorsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"check-git-deps: failed"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3error Tff7b72of Te6edf3errorsTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Ta5d6ff - Tffd700${Te6edf3errorTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"check-git-deps: ok"Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff`Ta5d6ff micron-parser commit: Tffd700${Tb4b4b4(Te6edf3allowByNameTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"micron-parser"Tb4b4b4) Tff7b72|| Tb4b4b4{Tffd700}Ta5d6ff).commit}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff`Ta5d6ff micron wasm tag: Tffd700${Te6edf3MICRON_PARSER_GO_RELEASE_TAGTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Te6edf3mainTb4b4b4(Tb4b4b4)Tb4b4b4;


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────